home *** CD-ROM | disk | FTP | other *** search
/ Die Ultimative Software-P…i Collection 1996 & 1997 / Die Ultimative Software-Pakete CD-ROM fur Atari Collection 1996 & 1997.iso / g / gnu_c / gpplib22.zoo / Changelo next >
Encoding:
Text File  |  1994-02-12  |  13.3 KB  |  369 lines

  1. *.cc *.h:: ++jrb bammi@cadence.com
  2.     Massive number of hacks for atariST.
  3.  
  4. ---------------------------- Patchlevel 1 -----------------------------------
  5.  
  6. *.cc *.h:: david
  7.  
  8. Hi. Enclosed are working libs and include files. The main mods have been
  9. to the file I/O stuff (except for a bug you introduced in str.cc, tsk tsk...)
  10. The following tests have been run:
  11.  
  12. tBitSet, tBitString, tComplex, tFile, tFix, tFix16, tFix24, tGetOpt,
  13. tInteger, tObstack, tRandom, tRational, tString
  14.  
  15. and all work fine and run easily except for a couple of (minor) caveats
  16.  
  17.     tRandom - one of the values (for SmplHist) is wrong, it's -3 times
  18.           the value it ought to be
  19.     tRational - needs a #define PI. Use the one in pml.h, since it's
  20.             the most precise one I could find (and the only one
  21.             that worked for every test)
  22.     tObstack - crashed with bombs the first time I tried (at the end
  23.            of the program, after all tests had been run successfully)
  24.            Hasn't been a problem since.
  25.     tComplex - needed hypot() defined. This is something that could
  26.            perhaps be moved into the pml library.
  27.  
  28. The only one that's actually *wrong* is tRandom - everything else is fine.
  29.  
  30. The other tests are for container classes/generic stuff. I haven't looked
  31. at them yet.....
  32.  
  33. As I said earlier, the main diffs are in the file I/O stuff.  When you
  34. look through them, take the following order - File, streambuf, filebuf,
  35. Filebuf, then istream/ostream.  File and streambuf are pretty well
  36. bin/text clean, but I haven't tested them to any great extent so there
  37. are likely to be problems.  filebuf's are likely to be ok, Filebuf's
  38. less so.  I don't remember making any mods to istream/ostream.... 
  39.  
  40. I started to get a little lost in Filbuf's. (Multiple inheritance always
  41. gives me a headache...) The file opening stuff comes from File, while the
  42. buffering is from streambuf's. (BTW, I'm using the names of classes, not
  43. files.)
  44.  
  45. All I can really promise about the stream stuff is that it works well
  46. enough to run the tests!
  47.  
  48. Here are a few more notes about the operation of the libs....
  49.  
  50. overflow/underflow are defined all over the place, and act as filbuf/flush
  51. for whatever class they're defined for. (These all filter down to
  52. each _filbuf/fflush or read/write.) must_overflow and must_underflow are
  53. called before every read/write, and call overflow/underflow if they
  54. have to. The File based classes use fputc/fgetc, and the bin/text stuff
  55. is handled by the GCC libs, though there's extra status in the state
  56. variable to indicate whether the File is in bin/text mode. The streambuf
  57. side, the putc is done by an inline, _atari_putc, while the various
  58. forms of getc all do their own thing. (There's get, get and advance, and
  59. advance.) There's a _bin_mode flag for streambufs. There may be a
  60. problem with the handling of _bin_mode for stdin/out/err: the streambuf
  61. stuff only deals with the file descriptor, not the FILE pointer, so I
  62. can't get at the _flags - all I do is check the fd against stdout->_file,
  63. etc.
  64.  
  65. The end-pointer for the buffers is two less than the size of the buffers,
  66. in case of a '\n' write at the end of the buffer in text mode. (This hasn't
  67. been tested, so it won't work... ;-)
  68.  
  69. The big change (ie, the one that actually got the streams working) was
  70. in Filebuf.cc, overflow(). _cnt is worked out before calling fflush
  71. (I think), and that was using the BSD semantics of _cnt, not yours.
  72. (Since I worked on the I/O stuff from the bottom up, this wasn't fixed
  73. until quite late on... :-(
  74.  
  75. I don't do anything with _IONBF, _IOFBF, and _IOLBF. (You'll know what's
  76. best in these situations. This is known as 'passing the buck'... ;-)
  77. I also don't do anything about 16/32, though I reckon that's what all
  78. your size_t stuff is for, yes? (I haven't gotten round to investigating
  79. it.)
  80.  
  81. I haven't included the exception handling stuff - not gotten round to
  82. testing them.
  83.  
  84. It's now midnight on Sunday, I'm tired and going to bed. G'night.
  85.  
  86.  
  87. Addendum...
  88.  
  89. Filenames now truncated to eight characters, and are all lowercase. Diffs
  90. are included, plus some extra files that didn't make it to patchlevel 1.
  91.  
  92. ---------------------------- Patchlevel 2 -----------------------------------
  93.  
  94. str.cc:: ++jrb
  95.     char *str, "blanks" should really be a long, since the others
  96. are size_t, and a int would ovr/undr flow when -mshort.
  97.  
  98. Makefile, makefile.16, makefile.32, mincl:: ++jrb
  99.     new files. set up make as per our conventions in all other libs
  100.  
  101. xcomplex.h:: ++jrb
  102.     hypot() moved to pml lib where it belongs.
  103.  
  104. xfile.cc:: ++jrb
  105.     use the enum constants _atari_bin/text instead of hardcoding
  106.     the numbers
  107.  
  108. streambu.h:: ++jrb
  109.     streambuf::stossc(): just need to advance the get pointer. No need to
  110.     special case for _bin/_text mode, as the get fns (sgetc(), snextc())
  111.     will advance the gptr over a \r when !_bin_mode. (the next time a
  112.     get happens, after the advance).
  113.  
  114. ident.c:: ++jrb
  115.     new file, for ident(1) identification.
  116.  
  117. ---------------------------- Patchlevel 3 -----------------------------------
  118.  
  119. streambu.h:: david
  120.     use <bool.h> instead of #defining TRUE/FALSE
  121.  
  122. gnulib3.c:: ++jrb
  123.     the atexit() call for destructors was inside a #ifdef section
  124.     and was never compiled. moved it out. now the iostreams
  125.     stuff works much better. i was wondering for a while there
  126.     why destructors were not happening at the end.
  127.  
  128. *.h *.cc:: ++jrb
  129.     sync with gnu libg++-1.40. Note there are hardly any real changes
  130.     mostly gpl lib licencing header comment changes. we might
  131.     as well be in sync though.
  132.  
  133. ---------------------------- Patchlevel 4 -----------------------------------
  134.  
  135. *.h:: ++jrb
  136.     get rid of #pragma once from gcc-2.0
  137.  
  138. ---------------------------- Patchlevel 5 -----------------------------------
  139.  
  140. all files:: ++jrb
  141.     brand new port of libg++-2.0: note iosteams are the defaults now.
  142.  
  143. ---------------------------- Patchlevel 6 -----------------------------------
  144.  
  145. iostream.cc, strstrea.cc:: ++jrb
  146.     fixes from the net.
  147.  
  148. ---------------------------- Patchlevel 7 -----------------------------------
  149.  
  150. streambu.h:: ++jrb
  151.     clean up the binary flag stuff. define everything in terms of
  152.     manifest constant _IOS_BIN. Also, in ios define binary and
  153.     text flags so that in the spirit of fstreams one can say
  154.         ofstream output_bin("filename", ios::out|ios::binary)
  155.     instead of
  156.         ofstream output_bin("filename", ios::out_bin);
  157.     similarly
  158.         ifstream input_text("filename", ios::in|ios::text);
  159.     instead of
  160.         ifstream input_text("filename", ios::in_text);
  161.     etc..
  162.  
  163. filebuf.cc:: ++jrb
  164.     - in the open(name, int mode) was'nt setting bin
  165.       flag for atarist
  166.     - in the open(name, char *mode) allow "rb"/"wb" etc modes and set
  167.     flags appropriately for bin/text mode.
  168.  
  169.     - also in both the cases above set initial flags appropriately from
  170.      __default_mode__ (which is set by the C function _binmode(binp)).
  171.  
  172.       JUST in case it is'nt obvious: the atariST lib streams now fully
  173.     honor the _binmode() and __DEFAULT_BUFSIZ__  semantic semantics of
  174.     the atariST gcc C library, for all <iostreams> based streams and
  175.     derivatives thereof. In case you are not familiar
  176.  
  177.     - calling _binmode(1): will cause all subsequent opens of any streams
  178.     to be opened in binary mode (streams are opened in text mode normally).
  179.     in any one individual call you can override the default. for example
  180.  
  181.  
  182.         fopen("foo", "r");    open for read in text mode
  183.     ifstream foo("foo", ios::read)    open for read in text mode
  184.  
  185.     _binmode(1);
  186.  
  187.         fopen("foo", "r");    open for read in binary mode
  188.     fopen("foo", "rt");    open for read in text mode
  189.     ifstream foo("foo", ios::read)    open for read in binary mode
  190.     ifstream foo("foo", ios::read|ios::text) open for read in text mode
  191.     ifstream foo("foo", ios::read|ios::binary) open for read in binary mode
  192.     ifstream foo("foo", "r") open for read in binary mode
  193.     ifstream foo("foo", "rt") open for read in text mode
  194.         
  195.     _binmode(0);
  196.     ifstream foo("foo", "r") open for read in text mode
  197.     ... and so on
  198.  
  199.     
  200.       - __DEFAULT_BUFSIZ__ unless overridden by the user defines the default
  201.     size of stream buffers, both in the C library and the G++ library.
  202.     It is initialized to BUFSIZ (see stdio.h) if it is not defined in
  203.     the user application.
  204.  
  205. stream.cc xinteger.cc :: ++jrb
  206.     updates from the net. Note: there has been very many patches on
  207.     the net, and its all getting very confusing, as like most people
  208.     i am also strugglinging to comprehend all the details of libg++.
  209.     so the updates that i have applied are only the ones that i
  210.     understood. maybe others can contribute to this effort.
  211.  
  212. gnulib.c:: ++jrb
  213.     rework it as per gcc-2.1 libgcc2.c. its much simpler now.
  214.  
  215. xyzzy.cc:: ++jrb    DELETE THIS FILE
  216.     this hack not needed any more
  217.  
  218. dummy.c:: ++jrb
  219.         dummy global cons/dest list only pulled in when the program does'nt
  220.     have any.
  221.  
  222. IMPORTANT NOTE  IMPORTANT NOTE  IMPORTANT NOTE  IMPORTANT NOTE  IMPORTANT NOTE 
  223.         dummy.o MUST be the last object on this list. otherwise you'll
  224.         end up with multiple definitions of global ctor/dtors and gcc-ld will
  225.     barf. be especially aware of this if you directly manipulate g++.olb
  226.     with gcc-ar. a good way to find out is to list the library with
  227.     `gcc-ar tv g++.olb' and dummy.o should be the last file listed.
  228.  
  229. ---------------------------- Patchlevel 8 -----------------------------------
  230.  
  231. all files: ++jrb
  232.     sync up with per (v 2.0.91).  iterations, pl 9, 10....11. everything
  233.     in sync with cygnus version now.
  234.  
  235. ---------------------------- Patchlevel 11 -----------------------------------
  236.  
  237. PatchLev.h iostream.h regex.h streambu.h
  238. filebuf.cc iostream.cc regex.cc sgetline.cc timer.cc xfix.cc xregex.cc:: ++jrb
  239.  
  240.     sync up with libg++-2.1. nothing major over 2.0.91, except for the
  241.     addition of stossc() to streambufs for ATT compatibility.
  242.  
  243. ---------------------------- Patchlevel 12 -----------------------------------
  244.  
  245. all over:
  246.     sync up with libg++ 2.1.9. lots of bug fixes, more accurate floating
  247.         point i/o. this is not such a big deal for the atari.
  248.  
  249. ---------------------------- Patchlevel 12.5 (not released) ------------------
  250.  
  251. all over:
  252.     sync up with libg++ 2.2. very minor bug fixes over libg++ 2.1.9
  253.  
  254. ---------------------------- Patchlevel 13 -----------------------------------
  255.  
  256. ident.c: frank
  257.     #include "PatchLev.h" instead of <PatchLev.h> to include correct file.
  258.  
  259. gnuaux.c:: ++jrb
  260.     seperate out the new handler stuff from the __builtin_new_vec.
  261.  
  262. mincl:: ++jrb
  263.     new target for above.
  264.  
  265. ---------------------------- Patchlevel 14 -----------------------------------
  266.  
  267. dummy.c:: ++jrb
  268.     break up file into two seperate files, dummy 1 and 2 seperating
  269.     ctor from dtor for the case in which a program only has
  270.     a one a global constructor or destructor.
  271.  
  272. mincl:: ++jrb
  273.     adjust atrgets for dummy[12].o
  274.  
  275. gnuaux.c:: ++jrb
  276.     dont pass a zero size request to malloc.
  277.  
  278. ---------------------------- Patchlevel 15 -----------------------------------
  279.  
  280. xobstack.cc:: ++jrb
  281.     must use delete [] form, because was alloced with new [] form.
  282.  
  283. filebuf.cc::  ++jrb
  284.     fix from net
  285.  
  286. iostream.cc:: ++jrb
  287.     line 696 cast this as appro. gcc 2.3.2 barfs otherwise.
  288.  
  289. *.cc, *.h:: ++jrb
  290.     half way thru syncing up with changes in libg++ 2.3 distribution.
  291.     i have done allthe non-io classes. still working on those.
  292.  
  293. ---------------------------- Patchlevel 16 -----------------------------------
  294.  
  295. *.cc:: ++jrb
  296.     sync up with rest of libg++-2.3. all classes done now.
  297.  
  298. ---------------------------- Patchlevel 17 -----------------------------------
  299.  
  300.     REMOVE    gnulib3.c gnuaux.c dummy1.c dummy2.c
  301.  
  302. mincl:: ++jrb
  303.     adjust for above. the low level g++ support is now in theC library.
  304.     this mirrors the organization of gcc. these files will be maintained
  305.     there. only, the libg++ classes will be in -lg++.
  306.  
  307.     remove special build rule for xbitset.cc. gcc 2.3.3 pl3 fixes
  308.     this problem (see patch to config/m68k.md)
  309.  
  310. ---------------------------- Patchlevel 18 -----------------------------------
  311. filebuf.cc floatcon.cc outfloat.cc streambu.cc xinteger.cc 
  312. xrationa.cc iomanip.h streambu.h :: ++jrb
  313.     sync up with libg++ 2.3.1
  314.  
  315. ---------------------------- Patchlevel 19 -----------------------------------
  316.  
  317.     RENAME iodtoa.cc to floatcon.cc due to gnu renaming. sorry about the
  318.     last patch, that tried to patch the wrong file.
  319.  
  320.  *.cc, *.h:: ++jrb
  321.     sync up with libg++ 2.3.10
  322.  
  323.  *.cc, *.h:: ++jrb
  324.     sync up with libg++ 2.3.91
  325.  
  326.  *.cc, *.h:: ++jrb
  327.     sync up with libg++ 2.4.0
  328.  
  329. ---------------------------- Patchlevel 20 -----------------------------------
  330.  
  331. stdio.h:: ++jrb
  332.     Conditionalize _NFILE : if <compiler.h> is included,it defines
  333.     it.
  334. ---------------------------- Patchlevel 20_1 ----------------------------------
  335.  
  336. Sync up with libg++ 2.5.1, completely new io classes.
  337. Restructure source and test directory structures to make it easier for
  338. me to sync up with the GNU source tree. The current structure was
  339. becoming a major pain in the butt.:: ++jrb
  340.  
  341. ---------------------------- Patchlevel 21 -----------------------------------
  342. in iosrc: builtinbuf.cc filedoalloc.c fileops.c floatconv.c genops.c
  343.           iofclose.c iofdopen.c iofopen.c iofputs.c iofread.c iofwrite.c
  344.           iopopen.c iostream.cc iovfscanf.c pfstream.cc sbscan.cc stdfiles.c
  345.       stdstreams.cc streambuf.cc strops.c strstream.cc :: ++jrb
  346.  
  347.     sync with libg++ 2.5.2
  348.  
  349. in iotests: tiomisc.cc tiomisc.exp: ++jrb
  350.     new test from libg++ 2.5.2
  351.  
  352. iotests/makefile.32, iotests/run32.g: ++jrb
  353.     add above test
  354.  
  355. in g++-inc : fstream.h iolibio.h libio.h libioP.h
  356.          streambuf.h strstream.h: ++jrb
  357.     sync with libg++ 2.5.2
  358.  
  359. in iosrc: filedoalloc.c genops.c indstream.cc iofread.c iofsetpos.c
  360.           iofwrite.c iovfprintf.c iovfscanf.c iovsscanf.c sbscan.cc : ++jrb
  361.  
  362.     sync with libg++ 2.5.3
  363.  
  364. in g++-inc: iostreamP.h libioP.h streambuf.h
  365.     sync with libg++ 2.5.3
  366.  
  367. in libsrc:  xfix.cc xinteger.cc: ++jrb
  368.     sync with libg++ 2.5.3
  369.